# ********************************************
# 使用面向过程思想对爬虫代码进行封装
# V1.0：实现一个页面的元素抓取

# ********************************************

import requests
from lxml import etree


# *************获取页面信息**********************
def get_page():
    # 输入：URL
    url = "http://42.192.62.88:30166/"

    # 发送请求
    response = requests.get(url)
    # 页面编码转换，不需要了，因为编码格式为utf-8，不需要再进行转换了
    # code=response.apparent_encoding
    # print(code)
    # 设置网站编码属性
    # response.encoding='gbk'

    content = response.text
    print(content)
    return content


# ****************提取页面元素****************************
def get_element(content):
    # 存储抓取数据
    # listcont = []
    # 将页面信息转化为dom格式
    doc = etree.HTML(content)
    tmp = ""
    # 循环提取一个页面上的元素
    for i in range(1, 11):
        # 通过xpath进行元素定位，获取页面最右侧的【】右侧的标题文字：例如；51Testing独家连载：智能驾驶之激光雷达算法详解(图)
        ele = doc.xpath('/html/body/div[4]/div[2]/ul[1]/li[' + str(i) + ']/a/text()')[0]

        # 打印输出元素
        print(i, ele)
        # 元素内容列表
        # 将元素逐个添加到列表中
        tmp = tmp + str(i) + ele + "\n"
    listcontent = tmp
    return listcontent


# ****************保存抓取内容****************************
def save_element(listcontent):
    # 元素内容列表
    # 创建一个文件
    file = open("spider.txt", "w")
    # 写入元素内容
    file.write(listcontent + "\n")
    # 保存并关闭文件
    file.close()


# 实例化类，进行类方法的调用
if __name__ == '__main__':
    # 逐个方法调试
    content = get_page()
    listcontent = get_element(content)
    save_element(listcontent)
